package com.obelisco.vista.componentes;

import java.util.ArrayList;
import java.util.List;

import nextapp.echo2.app.Alignment;
import nextapp.echo2.app.Button;
import nextapp.echo2.app.Column;
import nextapp.echo2.app.Component;
import nextapp.echo2.app.Extent;
import nextapp.echo2.app.Font;
import nextapp.echo2.app.ImageReference;
import nextapp.echo2.app.Insets;
import nextapp.echo2.app.Label;
import nextapp.echo2.app.ResourceImageReference;
import nextapp.echo2.app.Row;
import nextapp.echo2.app.SplitPane;
import nextapp.echo2.app.event.ActionEvent;
import nextapp.echo2.app.event.ActionListener;
import nextapp.echo2.app.layout.ColumnLayoutData;
import nextapp.echo2.app.layout.RowLayoutData;
import nextapp.echo2.app.layout.SplitPaneLayoutData;

import com.obelisco.vista.estilos.Styles;

import echopointng.ImageMap;

public class DialogoMensaje extends Ventana  {
	
	private TipoDialogo tipo;
	private BotonesDialogo botones;
	private String mensaje;
	protected static int ancho = 400;
	protected static int alto = 300;
	private List listaBotones = new ArrayList();

	private ActionListener manejadorEventoBoton = null;

	
    public DialogoMensaje(String titulo, String mensaje, TipoDialogo tipo, BotonesDialogo botones, ActionListener manejadorEventoBoton) {
    	super(titulo);
		this.tipo = tipo;
		if (mensaje != null)
		{
			mensaje = mensaje.toUpperCase();
		}
		this.mensaje = mensaje;
		this.botones = botones;
		this.manejadorEventoBoton = manejadorEventoBoton;				
		configurarControles();
    }

    private void configurarControles() {

		ImageReference iconoVentana = null; 
		ImageReference imagenVentana = null;
		
		if (tipo == TipoDialogo.ERROR) {
			iconoVentana = Styles.ICON_24_ERROR;
			imagenVentana = Styles.MENSAJE_ERROR;
		} else if (tipo == TipoDialogo.CONFIRMACION || tipo == TipoDialogo.INFORMACION) {
			iconoVentana = Styles.ICON_24_INFORMACION;
			imagenVentana = Styles.MENSAJE_INFORMACION;
		} else if (tipo == TipoDialogo.ADVERTENCIA) {
			iconoVentana = Styles.ICON_24_ADVERTENCIA;
			imagenVentana = Styles.MENSAJE_ADVERTENCIA;
		}

		this.setIcono(iconoVentana);

        SplitPane splitContenido = new SplitPane();
		splitContenido.setStyleName("ControlPane.Container.Bottom");

		add(splitContenido);

		Row rowBarra = new Row();
		rowBarra.setStyleName("ControlPane");
		splitContenido.add(rowBarra);

		Button button;
		if (botones == BotonesDialogo.OK) {
			
    		button = new Button();
    		button.setIcon(Styles.ICON_24_ACEPTAR);
            button.setActionCommand("OK");
            if (manejadorEventoBoton != null) {
                button.addActionListener(manejadorEventoBoton);
            }
            listaBotones.add(button);
            rowBarra.add(button);
            
		} else if (botones == BotonesDialogo.SI_NO) {
			
    		button = new Button();
    		button.setIcon(Styles.ICON_24_ACEPTAR);
            button.setActionCommand("SI");
            if (manejadorEventoBoton != null) {
                button.addActionListener(manejadorEventoBoton);
            }
            listaBotones.add(button);
            rowBarra.add(button);

    		button = new Button();
    		button.setIcon(Styles.ICON_24_CANCELAR);
    		button.setActionCommand("NO");
            if (manejadorEventoBoton != null) {
                button.addActionListener(manejadorEventoBoton);
            }
            listaBotones.add(button);
            rowBarra.add(button);

		} 

		PaneDialogoMensaje paneDialogoMensaje = new PaneDialogoMensaje(mensaje,imagenVentana);
		splitContenido.add(paneDialogoMensaje);

		
    }

    public static DialogoMensaje mostrar(String titulo, String mensaje, TipoDialogo tipo, BotonesDialogo botones,ActionListener manejadorEventoBoton) {

    	DialogoMensaje dialogo = new DialogoMensaje(titulo,mensaje,tipo,botones, manejadorEventoBoton);
    	dialogo.setModal(true);
    	dialogo.mostrarDialogo(ancho, alto);  
    	return dialogo;
    	
    }
    
    public static DialogoMensaje mostrar(Component padre, String titulo, String mensaje, TipoDialogo tipo, BotonesDialogo botones,ActionListener manejadorEventoBoton) {

    	DialogoMensaje dialogo = new DialogoMensaje(titulo,mensaje,tipo,botones, manejadorEventoBoton);
    	dialogo.setModal(true);
    	dialogo.mostrarDialogo(padre, ancho, alto);  
    	return dialogo;
    	
    }

	
	public ActionListener getManejadorEventoBoton() {
		return manejadorEventoBoton;
	}

	public void setManejadorEventoBoton(ActionListener manejadorEventoBoton) {
		this.manejadorEventoBoton = manejadorEventoBoton;
	}

	public List getListaBotones() {
		return listaBotones;
	}

	public void setListaBotones(List listaBotones) {
		this.listaBotones = listaBotones;
	}

}


